package com.example.gateway.designPattern.builder;

import com.example.gateway.designPattern.builder.Computer;
import com.example.gateway.designPattern.builder.ComputerBuilder;
import com.example.gateway.designPattern.builder.Director;
import com.example.gateway.designPattern.builder.HPComputerBuilder;

/**
 * @ClassName: Client
 * @Description:
 * @Author: YourName
 * @Date: 2024/12/30
 */

public class Client {
    public static void main(String[] args) {
        //生成器模式  构造一个电脑 (惠普)
       /* 优点:
            将一个对象分解为各个组件
            将对象组件的构造封装起来
            可以控制整个对象的生成过程
          缺点:
            对不同类型的对象需要实现不同的具体构造器的类，这可能会大大增加类的数量
          生成器模式与工厂模式的不同：
            生成器模式构建对象的时候，对象通常构建的过程中需要多个步骤，
            就像我们例子中的先有主机，再有显示屏，再有鼠标等等，
            生成器模式的作用就是将这些复杂的构建过程封装起来。
            工厂模式构建对象的时候通常就只有一个步骤，
            调用一个工厂方法就可以生成一个对象
        */

        //获取电脑的构造器
        ComputerBuilder computerBuilder = new HPComputerBuilder();
        //获取电脑的指挥者
        Director director = new Director(computerBuilder);
        //指挥者开始构造电脑
        director.constructComputer();
        //获取构造好的电脑
        Computer computer = director.getComputer();
        System.out.println(computer.toString());


        //StringBuilder

        StringBuilder stringBuilder = new StringBuilder();
    }
}
